package com.jqq.inner_;

//局部内部类
public class LocalInnerClass {
    public static void main(String[] args) {
        new Outer02().m1();

    }
}
class Outer02{//外部类
    private int n1 = 10;//私有属性
    private int n2 = 20;
    private void m2(){
        System.out.println("Outer m2()");
    }//私有方法
    public void m1(){
        //局部内部类是定义在外部类的局部位置，通常在方法
        final class Inner02{//局部内部类(本质仍然是一个类)
            //可以直接访问外部类的所有成员，包含私有的
            public void f1(){
                int n2 = 200;
                System.out.println("Outer n1=" + n1);
                m2();
                //如果外部类的成员和内部类的成员重名时，遵循就近原则
                System.out.println("Inner n2=" + n2);
                //如果像访问外部类的成员，使用外部类名.this.成员名
                System.out.println("Outer n2="+ Outer02.this.n2);
            }
        }
        //Inner02加了final就不可以被继承了
//        class Inner03 extends Inner02{}

        //必须在其作用域里进行调用，也就是定义该内部类的方法中
        //访问形式：创建对象再访问
        new Inner02().f1();

    }

}